
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;


public class Juego extends GameCanvas{

    //Ancho y alto de la pantalla del celular
    private final int ANCHO;
    private final int ALTO;

    private Animador animador; //Avisará que se actualice y dibuje
    private Graphics g;
    private AppAnimacion midlet;

    private Cuadro cuadro;
    private Pelota pelota;
    private Fondo atras;
    private Fondo frente;
    private Vector pelotas;
    private boolean pausado;
   // private Mapa mapa;

    public Juego(AppAnimacion midlet){
        super(true);
        this.midlet=midlet;
        this.setFullScreenMode(true);
        ANCHO=this.getWidth();
        ALTO=this.getHeight();
        g=this.getGraphics();

       cuadro=new Cuadro(ANCHO/2, ALTO-10,30,10,0x00FF00);
       pelotas = new Vector(50);
       try{
           for(int i =0;i<50; i++)
               pelotas.addElement(new Pelota("/PelotaMov.png",ANCHO,ALTO));
           pelota=new Pelota("/PelotaMov.png", ANCHO, ALTO);
           atras = new Fondo("/BackgroundMexico.png");
          // frente = new Fondo("/Nopal.png");
       }catch (IOException ex){
           System.out.println("No se puede cargar una imagen");
       }
     //  mapa = new Mapa();
       animador=new Animador(this);
       animador.iniciar();
       pausado = false;
   }



    void dibujar() {
        g.setColor(0x0000FF);
        g.fillRect(0, 0, ANCHO, ALTO);
        //Dibujar todos los objetos de la aplicación
        atras.dibujar(g);
        //frente.dibujar(g);
     //   mapa.dibujar(g);
        cuadro.dibujar(g);
        pelota.dibujar(g);
        for(int i=0; i<pelotas.size();i++){
            Pelota p = (Pelota)pelotas.elementAt(i);
            p.dibujar(g);
        }

        if(pausado){
            g.setColor(0xFFFFFF);
            g.drawString("P a u s a", ANCHO/2, ALTO/2, Graphics.HCENTER|Graphics.TOP);
        }
        flushGraphics();
    }

    void actualizar() {

        //De esta forma tomaría en cuenta 2 teclas oprimidas, si pones un solo
        //if va a tomar en cuenta solo una
        int estado=getKeyStates();

        if( ( estado & GAME_A_PRESSED)!=0){ //Boton de pausa
            pausado = !pausado;
        }
        
        if(pausado){
            return;
        }
        if((estado&LEFT_PRESSED)!=0){
            cuadro.moverIzquierda();
        }
        if((estado&RIGHT_PRESSED)!=0){
            cuadro.moverDerecha();
        }

        pelota.actualizar();

        //Probar choque  con la raqueta
        if(pelota.getX()>=cuadro.getX() &&
            pelota.getX()+pelota.getWidth()<=cuadro.getX()+cuadro.getAnchoPantalla()){
            if(pelota.getY()+pelota.getHeight()>=cuadro.getY()){  //incompleto
                pelota.moverArriba(); //Cambia la direccion hacia arriba
            }
        }
        atras.mover(1);
        //frente.mover(3);
        for(int i=0; i<pelotas.size();i++){
            Pelota p = (Pelota)pelotas.elementAt(i);
            p.actualizar();
        }
    }

    protected void hideNotify(){
        pausado = true;
    }

    protected void showNotify(){

    }

}
